#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>


using namespace std;


#include <iostream>
#include <string>


using namespace std;

bool is_BackStr(string& dest)
{
    string::iterator it = dest.begin();
    string::reverse_iterator rit = dest.rbegin();
    while (it != dest.end())
    {
        if (*it != *rit)
            return false;
        ++it;
        ++rit;
    }
    return true;
}


//int main()
////{
//    string A, B;
//    cin >> A;
//    cin >> B;
//    int len = A.length();
//    // cout << len << endl;
//    int count = 0;
//
//    do
//    {
//        string tmp = A;
//        //string::iterator it = tmp.begin();
//        string backtmp;
//        int tmplen = len;
//        while (tmplen--)
//        {
//            backtmp.insert(backtmp.begin(), *(tmp.end() - 1));
//            tmp.pop_back();
//        }
//        tmp += B;
//        tmp += backtmp;
//        //cout << tmp << endl;
//        if (is_BackStr(tmp))
//            ++count;
//
//
//    } while (len--);
//
//    cout << count << endl;
//
//    return 0;
//}

int main()
{
    int num = 0;
    cin >> num;
    int* arr = new int[num];
    int tmp = num;
    while (num)
        cin >> arr[--num];
    //sort(arr, arr + tmp);


    //for(int i = 0;i < tmp;++i)
     //   cout << arr[i] << " ";
    //cout << endl;

    //if(arr[tmp - 1] <= 0){   cout << arr[tmp-1];



    //cout << arr[0] << " " << arr[1] << " " << arr[2] << endl;
    int max = -1111111;
    int sum = arr[0];
    for (int i = 1; i < tmp; ++i)
    {
        // sum += arr[i];
        if (sum >= 0)
        {
            sum += arr[i];
        }
        else
        {
            sum = arr[i];
        }
        if (sum > max)
        {
            max = sum;
        }


    }
    cout << max << endl;
    return 0;
}